package com.example.servletdemo.listner;

import com.example.servletdemo.utils.DateUtils;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

//@WebListener
public class MyHttpSessionLister implements HttpSessionListener {
    private static final String TAG = "MyHttpSessionLister";
    /**
     * 一个浏览器第一次访问网站的时候，J2EE应用服务器会新建一个HttpSession对象 ，并触发 HttpSession创建事件 ，
     * 如果注册了HttpSessionListener事件监听器，则会调用HttpSessionListener事件监听器的 sessionCreated方法。
     * @param se
     */
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println(TAG+" :HttpSession对象被创建 "+ DateUtils.getTimeString());
    }

    /**
     * 当这个浏览器访问结束超时的时候，J2EE应用服务器会销毁相应的HttpSession对象，触发 HttpSession销毁事件，
     * 同时调用所注册HttpSessionListener事件监听器的sessionDestroyed方法
     *
     * 以下两种情况下就会发生sessionDestoryed（会话销毁）事件：
     * 1.执行session.invalidate()方法时   会调用sessionListener的sessionDestroyed方法
     * 2.如果用户长时间没有访问服务器，超过了会话最大超时时间 ，服务器就会自动销毁超时的session。会调用sessionListener的sessionDestroyed方法
     * @param se
     */
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println(TAG+" :HttpSession对象被销毁 "+ DateUtils.getTimeString());
    }
}
